home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / DLLSKEL.PAK / APPSKEL.C < prev    next >
C/C++ Source or Header  |  1997-05-06  |  7KB  |  239 lines

  1. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  2. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  3. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  4. // PARTICULAR PURPOSE.
  5. //
  6. // Copyright (C) 1993-1995  Microsoft Corporation.  All Rights Reserved.
  7. //
  8. //  MODULE:   appskel.c
  9. //
  10. //  PURPOSE:   Implement the windows procedure for the main application
  11. //    windows.  Also implement the generic message and command dispatchers.
  12. //
  13. //  FUNCTIONS:
  14. //    WndProc      - Processes messages for the main window.
  15. //    MsgCommand   - Handle the WM_COMMAND messages for the main window.
  16. //    MsgDestroy   - Handles the WM_DESTROY message by calling 
  17. //                   PostQuitMessage().
  18. //    CmdExit      - Handles the file exit command by calling destory 
  19. //                   window on the main window.
  20. //    CmdDLLFunc1  - Calls DLLFunction1() from DLLSKEL.DLL
  21. //    CmdDLLFunc2  - Calls DLLFunction2() from DLLSKEL.DLL
  22. //
  23. //  COMMENTS:
  24. //    Message dispatch table -
  25. //      For every message to be handled by the main window procedure
  26. //      place the message number and handler function pointer in
  27. //      rgmsd (the message dispatch table).  Place the prototype
  28. //      for the function in globals.h and the definition of the
  29. //      function in the appropriate module.
  30. //    Command dispatch table -
  31. //      For every command to be handled by the main window procedure
  32. //      place the command number and handler function pointer in
  33. //      rgcmd (the command dispatch table).  Place the prototype
  34. //      for the function in globals.h and the definition of the
  35. //      function in the appropriate module.
  36. //    Globals.h Contains the definitions of the structures and dispatch.c
  37. //      contains the functions that use these structures.
  38. //
  39.  
  40. #include <windows.h>            // required for all Windows applications
  41. #include <windowsx.h>
  42. #include "globals.h"            // prototypes specific to this application
  43. #include "dllskel.h"            // prototypes for DLL functions
  44.  
  45.  
  46. // Main window message table definition.
  47. MSD rgmsd[] =
  48. {
  49.     {WM_COMMAND, MsgCommand},
  50.     {WM_DESTROY, MsgDestroy}
  51. };
  52.  
  53. MSDI msdiMain =
  54. {
  55.     sizeof(rgmsd) / sizeof(MSD),
  56.     rgmsd,
  57.     edwpWindow
  58. };
  59.  
  60.  
  61. // Main window command table definition.
  62. CMD rgcmd[] =
  63. {
  64.     {IDM_EXIT,     CmdExit},
  65.     {IDM_ABOUT,    CmdAbout},
  66.     {IDM_DLLFUNC1, CmdDLLFunc1},
  67.     {IDM_DLLFUNC2, CmdDLLFunc2}
  68. };
  69.  
  70. CMDI cmdiMain =
  71. {
  72.     sizeof(rgcmd) / sizeof(CMD),
  73.     rgcmd,
  74.     edwpWindow
  75. };
  76.  
  77.  
  78. //
  79. //  FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
  80. //
  81. //  PURPOSE:  Processes messages for the main window.
  82. //
  83. //  PARAMETERS:
  84. //    hwnd     - window handle
  85. //    uMessage - message number
  86. //    wparam   - additional information (dependant on message number)
  87. //    lparam   - additional information (dependant on message number)
  88. //
  89. //  RETURN VALUE:
  90. //    The return value depends on the message number.  If the message
  91. //    is implemented in the message dispatch table, the return value is
  92. //    the value returned by the message handling function.  Otherwise,
  93. //    the return value is the value returned by the default window procedure.
  94. //
  95. //  COMMENTS:
  96. //    Call the DispMessage() function with the main window's message dispatch
  97. //    information (msdiMain) and the message specific information.
  98. //
  99.  
  100. LRESULT CALLBACK WndProc(HWND   hwnd, 
  101.                          UINT   uMessage, 
  102.                          WPARAM wparam, 
  103.                          LPARAM lparam)
  104. {
  105.     return DispMessage(&msdiMain, hwnd, uMessage, wparam, lparam);
  106. }
  107.  
  108.  
  109. //
  110. //  FUNCTION: MsgCommand(HWND, UINT, WPARAM, LPARAM)
  111. //
  112. //  PURPOSE: Handle the WM_COMMAND messages for the main window.
  113. //
  114. //  PARAMETERS:
  115. //    hwnd     - window handle
  116. //    uMessage - WM_COMMAND (Unused)
  117. //    GET_WM_COMMAND_ID(wparam, lparam)   - Command identifier
  118. //    GET_WM_COMMAND_HWND(wparam, lparam) - Control handle
  119. //
  120. //  RETURN VALUE:
  121. //    The return value depends on the message number.  If the message
  122. //    is implemented in the message dispatch table, the return value is
  123. //    the value returned by the message handling function.  Otherwise,
  124. //    the return value is the value returned by the default window procedure.
  125. //
  126. //  COMMENTS:
  127. //    Call the DispCommand() function with the main window's command dispatch
  128. //    information (cmdiMain) and the command specific information.
  129. //
  130.  
  131. #pragma argsused
  132. LRESULT MsgCommand(HWND hwnd, UINT uMessage, WPARAM wparam, LPARAM lparam)
  133. {
  134.     return DispCommand(&cmdiMain, hwnd, wparam, lparam);
  135. }
  136.  
  137.  
  138. //
  139. //  FUNCTION: MsgDestroy(HWND, UINT, WPARAM, LPARAM)
  140. //
  141. //  PURPOSE: Calls PostQuitMessage().
  142. //
  143. //  PARAMETERS:
  144. //
  145. //    hwnd      - Window handle  (Unused)
  146. //    uMessage  - Message number (Unused)
  147. //    wparam    - Extra data     (Unused)
  148. //    lparam    - Extra data     (Unused)
  149. //
  150. //  RETURN VALUE:
  151. //
  152. //    Always returns 0 - Message handled
  153. //
  154. //  COMMENTS:
  155. //
  156. //
  157.  
  158. #pragma argsused
  159. LRESULT MsgDestroy(HWND hwnd, UINT uMessage, WPARAM wparam, LPARAM lparam)
  160. {
  161.     PostQuitMessage(0);
  162.     return 0;
  163. }
  164.  
  165. //
  166. //  FUNCTION: CmdExit(HWND, WORD, WORD, HWND)
  167. //
  168. //  PURPOSE: Exit the application.
  169. //
  170. //  PARAMETERS:
  171. //    hwnd     - The window.
  172. //    wCommand - IDM_EXIT (unused)
  173. //    wNotify  - Notification number (unused)
  174. //    hwndCtrl - NULL (unused)
  175. //
  176. //  RETURN VALUE:
  177. //    Always returns 0 - command handled.
  178. //
  179. //  COMMENTS:
  180. //
  181. //
  182.  
  183. #pragma argsused
  184. LRESULT CmdExit(HWND hwnd, WORD wCommand, WORD wNotify, HWND hwndCtrl)
  185. {
  186.     DestroyWindow(hwnd);
  187.     return 0;
  188. }
  189.  
  190.  
  191. //
  192. //  FUNCTION: CmdDLLFunc1(HWND, WORD, WORD, HWND)
  193. //
  194. //  PURPOSE: Exit the application.
  195. //
  196. //  PARAMETERS:
  197. //    hwnd      - The window          (unused)
  198. //    wCommand  - IDM_DLLFUNC1        (unused)
  199. //    wNotify   - Notification number (unused)
  200. //    hwndCtrl  - NULL                (unused)
  201. //
  202. //  RETURN VALUE:
  203. //    Always returns 0 - command handled.
  204. //
  205. //  COMMENTS:
  206. //
  207.  
  208. #pragma argsused
  209. LRESULT CmdDLLFunc1(HWND hwnd, WORD wCommand, WORD wNotify, HWND hwndCtrl)
  210. {
  211.     DLLFunction1(hwnd, "This message was passed from AppSkel to DLLSkel");
  212.     return 0;
  213. }
  214.  
  215.  
  216. //
  217. //  FUNCTION: CmdDllFunc2(HWND, WORD, WORD, HWND)
  218. //
  219. //  PURPOSE:
  220. //
  221. //  PARAMETERS:
  222. //    hwnd      - The window.         (unused)
  223. //    wCommand  - IDM_DLLFUNC2        (unused)
  224. //    wNotify   - Notification number (unused)
  225. //    hwndCtrl  - NULL                (unused)
  226. //
  227. //  RETURN VALUE:
  228. //    Always returns 0 - command handled.
  229. //
  230. //  COMMENTS:
  231. //
  232.  
  233. #pragma argsused
  234. LRESULT CmdDLLFunc2(HWND hwnd, WORD wCommand, WORD wNotify, HWND hwndCtrl)
  235. {
  236.     DLLFunction2(hwnd);
  237.     return 0;
  238. }
  239.